Updated upstream ======= >>>>>>> Stashed changes
Modificad dentro del documento .qmd vuestros datos personales (nombre y DNI) que se encuentran en el encabezado del archivo.
Aseguraos de que el archivo .qmd se renderice correctamente ANTES de continuar editando el documento y que el archivo .html correspondiente se genere en tu carpeta local en el ordenador.
Los bloques de código (chunks) creados están vacíos o incompletos. Una vez que edites lo que consideres necesario, debes cambiar cada bloque a #| eval: true (o eliminarlo directamente) para que se ejecuten.
Recuerda que puedes ejecutar los bloques de código uno por uno con el botón play o ejecutar todos los bloques hasta un bloque específico (con el botón situado a la izquierda del anterior).
Insertad aquí todos los paquetes vayáis necesitando
Un viejo amigo: la práctica se basará en los archivos de datos electorales que se indican a continuación, recopilando datos sobre las elecciones al Congreso de los Diputados en España desde 2008 hasta la actualidad, así como encuestas, códigos de municipios y abreviaturas
election_data: archivo con las elecciones al congresocod_mun: archivo con los códigos y nombres de cada municipioabbrev: siglas de cada partidosurveys: encuestas electorales desde 1982.surveys: encuestas electorales desde 1982.
type_survey: tipo de encuesta (nacional, regional…)date_elec: fecha de las futuras eleccionesid_pollster, pollster, media: id y nombre de la empresa encuestadora, así como medio que la encargófield_date_from, field_date_to: fechas de inicio y fin del trabajo de la encuestaexit_poll: ¿es una encuesta a pie de urna?size: tamaño muestral de la encuestaturnout: participación (estimación)El objetivo de la entrega es realizar un análisis de los datos electorales, llevando a cabo la depuración, los resúmenes y los gráficos que consideres necesarios, tanto de los resultados como de la precisión de las encuestas electorales.
En concreto, debes trabajar únicamente en el período de tiempo que incluye las elecciones desde 2008 hasta las últimas elecciones de 2019
Además de lo que consideres oportuno realizar, los siguientes elementos son obligatorios:
Cada grupo debe presentar antes del 17 de enero (23:59) un análisis de los datos en formato .qmd y .html, en modo Quarto slides, que serán los que presentarán el día de la exposición.
Las Quarto slides deben subirse a Github (un miembro de cada grupo deberá proporcionar el enlace).
El número máximo de diapositivas será de 45. El tiempo máximo para cada grupo será de 22 minutos (+5-10 minutos para preguntas).
Durante la presentación, deberéis explicar (de manera resumida) el análisis realizado, asegurándoos de que cada miembro del equipo hable durante un tiempo similar y que cualquier miembro pueda responder preguntas sobre cualquiera de los pasos realizados. La nota no será la misma para todos los integrantes.
Se valorará no solo el contenido, sino también la presentación (estética).
El objetivo es demostrar que se ha adquirido el máximo conocimiento del curso
Los datos deben ser convertidos a tidydata donde sea apropiado.
Debes incluir al menos un join entre tablas.
Recordatorio: información = varianza
Los paquetes {glue}, {forcats} y {lubridate} deben ser utilizados en algún punto
Los siguientes elementos deben usarse al menos una vez: mutate, summarise, group_by (o su equivalente), case_when
Deberéis definir al menos una función (con más de 5 líneas de código)
Todo lo que no esté en alguno de los anteriores partidos debe ser correctamente reagrupado (y resumido) en OTROS
Las siglas deben ser usadas en las visualizaciones (ideas en https://r-graph-gallery.com/).
Debes usar todos los archivos en algún momento.
Debes descartar las encuestas que:
- se refieran a elecciones anteriores a 2008
- sean a pie de urna
- tamaño muestral desconocido o inferior a 500.
- tenga 1 día o menos de trabajo de campo.
¿Qué partido fue el ganador en los municipios con más de 100.000 habitantes (censo) en cada una de las elecciones?
¿Qué partido fue el segundo cuando el primero fue el PSOE? ¿Y cuando el primero fue el PP?
¿A quién beneficia la baja participación?
¿Cómo analizar la relación entre censo y voto? ¿Es cierto que determinados partidos ganan en las zonas rurales?
¿Cómo calibrar el error de las encuestas (recordemos que las encuestas son de intención de voto a nivel nacional)?
¿Qué casas encuestadoras acertaron más y cuáles se desviaron más de los resultados?
Debes incluir al menos 3 preguntas “originales” más que consideres interesantes de responder utilizando los datos.
No se valorará más a quien haga más cosas.
Más no siempre es mejor
Se valorará la originalidad (en comparación con el resto de trabajos, ya sea en lo analizado, en el tema tratado, etc.), el cariño puesto en la entrega (el cariño en la vida es importante) y la relevancia de lo realizado.
Una vez que tengas los elementos obligatorios de tu base de datos más o menos completos, piensa antes de escribir código: ¿qué podría ser interesante? ¿Qué necesito para obtener un resumen tanto numérico como visual?
Recuerda que el objetivo real es demostrar un dominio de las herramientas vistas a lo largo del curso. Y eso no se mide solo por la cantidad de herramientas utilizadas, sino también por la calidad en su ejecución.
Deberéis tenerlo todo subido a Github con el enlace generado de manera correcta.
datos <- election_data |>
pivot_longer(cols="BERDEAK-LOS VERDES":"COALICIÓN POR MELILLA",names_to = "partidos",values_to="votos",values_drop_na=TRUE) |> select(-tipo_eleccion, -vuelta, -codigo_distrito_electoral)
datos<- datos |>
mutate(siglas = case_when( str_detect(partidos,"PARTIDO SOCIALISTA OBRERO ESPAÑOL|PARTIT DELS SOCIALISTES DE CATALUNYA|PARTIDO DOS SOCIALISTAS DE GALICIA")~"PSOE",
str_detect(partidos,"PARTIDO POPULAR")~"PP",
str_detect(partidos,"CIUDADANOS|CIUTADANS")~"CS", str_detect(partidos,"PODEMOS|UNIDAS PODEMOS|UNIDOS PODEMOS|EN COMÚ PODEM|BERDEAK-LOS VERDES")~"UP",
str_detect(partidos,"EUZKO ALDERDI JELTZALEA-PARTIDO NACIONALISTA VASCO")~"EAJ-PNV",
str_detect(partidos,"BLOQUE NACIONALISTA GALEGO")~"BNG",
str_detect(partidos,"BLOC-INICIATIVA-VERDS-EQUO-COALICIÓ COMPROMÍS|COMPROMÍS-PODEMOS-ÉS EL MOMENT|COMPROMÍS-PODEMOS-EUPV: A LA VALENCIANA|COMPROMÍS: BLOC-INICIATIVA-VERDSEQUO|MÉS COMPROMÍS")~"COMPROMIS",
str_detect(partidos,"CONVERGENCIA I UNIO")~"CIU",
str_detect(partidos,"ESQUERRA REPUBLICANA DE CATALUNYA")~"ERC",
str_detect(partidos,"MÁS PAÍS")~"MP",
str_detect(partidos,"VOX")~"VOX",
str_detect(partidos,"EUSKAL HERRIA BILDU")~"EH-BILDU",
TRUE~"OTROS")) |>
mutate(fecha = ymd(glue("{anno}{mes}01")), cod_mun = glue("{codigo_ccaa}-{codigo_provincia}-{codigo_municipio}")) |>
relocate(fecha,.after=mes) |>
relocate(cod_mun,.after=codigo_municipio) |>
mutate(votos = sum(votos), .by = c(fecha, cod_mun, siglas)) |>
distinct(fecha, cod_mun, siglas, .keep_all = TRUE)
<<<<<<< Updated upstream
encuestas<- surveys |> pivot_longer(cols="UCD":"EV",names_to="partidos", values_to="estimacion",values_drop_na=TRUE) |> drop_na(size) |>
filter(size>750 & exit_poll==FALSE & year(date_elec)>"2007" &
(field_date_to-field_date_from)>1)
tema_favorito <- theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 25, color = "#83D2F2"),
panel.background = element_rect(fill = "#E891D0"),
legend.position = "bottom")partidos_nacionales <- c("PP", "PSOE", "VOX", "UP", "MP", "UNIDAS PODEMOS"," CS") #determinamos los paises nacionale
#sumamos todos los votos que han conseguido cada partido
suma <-
datos |>
group_by(siglas) |>
summarise(total_votos = sum(votos))
suma# A tibble: 13 × 2
siglas total_votos
<chr> <dbl>
1 BNG 606089
2 CIU 774425
3 COMPROMIS 473004
4 CS 12582740
5 EAJ-PNV 1986815
6 EH-BILDU 937910
7 ERC 3018694
8 MP 370222
9 OTROS 17081394
10 PP 45303566
11 PSOE 41615750
12 UP 16204859
13 VOX 6421604
# Creamos 'grupo' para distinguir entre nacional y autonómico
nacional_autonomo <-
suma |>
mutate(grupo = ifelse(siglas %in% partidos_nacionales, "Nacional", "Autonomico"))
nacional_autonomo# A tibble: 13 × 3
siglas total_votos grupo
<chr> <dbl> <chr>
1 BNG 606089 Autonomico
2 CIU 774425 Autonomico
3 COMPROMIS 473004 Autonomico
4 CS 12582740 Autonomico
5 EAJ-PNV 1986815 Autonomico
6 EH-BILDU 937910 Autonomico
7 ERC 3018694 Autonomico
8 MP 370222 Nacional
9 OTROS 17081394 Autonomico
10 PP 45303566 Nacional
11 PSOE 41615750 Nacional
12 UP 16204859 Nacional
13 VOX 6421604 Nacional
# Sumamos los votos por grupo
suma_grupo <- nacional_autonomo |>
group_by(grupo) |>
summarise(total_votos = sum(total_votos))
suma_grupo# A tibble: 2 × 2
grupo total_votos
<chr> <dbl>
1 Autonomico 37461071
2 Nacional 109916001
# Calcula el porcentaje del total
porcentaje_grupo <-
suma_grupo |>
mutate(porcentaje = total_votos / sum(total_votos) * 100)
porcentaje_grupo# A tibble: 2 × 3
grupo total_votos porcentaje
<chr> <dbl> <dbl>
1 Autonomico 37461071 25.4
2 Nacional 109916001 74.6
partido_ganador <- datos|>
filter(censo>100000) |> # Filtro los municipios que importan
group_by(fecha,cod_mun) |> #agrupo por fecha y municipio
select(fecha,cod_mun,censo,siglas,votos) |> #seleccionamos solo lo relevante
slice_max(votos) |> #cogemos al ganador(el que tiene más votos)
left_join(cod_mun,by="cod_mun") # traemos los municipios
partido_ganador# A tibble: 282 × 6
# Groups: fecha, cod_mun [282]
fecha cod_mun censo siglas votos municipio
<date> <glue> <dbl> <chr> <dbl> <chr>
1 2008-03-01 01-04-013 134948 PP 49463 Almería
2 2008-03-01 01-11-012 106478 PSOE 32798 Cádiz
3 2008-03-01 01-11-020 158933 PSOE 55811 Jerez de la Frontera
4 2008-03-01 01-14-021 258020 PP 89057 Córdoba
5 2008-03-01 01-18-087 191003 PP 73764 Granada
6 2008-03-01 01-21-041 114714 PSOE 37930 Huelva
7 2008-03-01 01-29-067 423352 PSOE 135722 Málaga
8 2008-03-01 01-41-091 550377 PSOE 209515 Sevilla
9 2008-03-01 02-50-297 495871 PSOE 173636 Zaragoza
10 2008-03-01 03-33-024 232858 PSOE 82478 Gijón
# ℹ 272 more rows
ggplot(partido_ganador)+
geom_bar(aes(x=siglas,fill=siglas))+
scale_fill_manual(values=c("EAJ-PNV"="#4B9438","PP"="#4282D3", ERC = "#EEB661", "PSOE" = "#FF1616","UP" = "#A707FD","VOX"="#44C22B", "OTROS"="#889B98"))+
labs(x="partidos",y="victorias", title = "¿Qué partido fue el ganador en cada una de las elecciones?", subtitle = "En los municipios con más de 100.000 habitantes (censo)")+
facet_wrap(~fecha) +
tema_favorito +
coord_flip()